import java.util.Scanner;

public class ExceptionDemo {
    public static void main(String[] args) {
//        int[] arr = {1, 2, 3, 4, 5};
//        try {
////            System.out.println(arr[10]);
//            System.out.println(2 / 0);
//            /**
//             * 只要加了try catch
//             * 就不会影响到后续代码的执行 不管是不是指定异常类型
//             * 想要捕获多个类型错误 就添加多个catch 每个catch捕获可能出现的异常类型
//             * 如果我们要捕获多个异常 且这些异常之间存在父子关系 那么子类异常要写在父类异常之前 否则会报错
//             *
//             * */
//        } catch (ArrayIndexOutOfBoundsException e) {
//            System.out.println("索引越界了");
////            throw new RuntimeException(e);
//        } catch (ArithmeticException e) {
//            System.out.println("算术异常了");
////            throw new RuntimeException(e);
//        }
//        System.out.println("看看我执行了吗？");


//        int[] arr = {1, 2, 3, 4, 5};
//        try{
//            System.out.println(arr[10]);//ArrayIndexOutOfBoundsException
//            /**
//             * 当出现索引越界异常 但是我们捕获的是NullPointerException
//             * 异常就不会被捕捉 代码会报错
//             * 所以我们要注意 要根据实际情况 捕获合适的异常类型
//             * */
//
//            //这里捕获的是空指针异常
//        }catch (NullPointerException e){
//            System.out.println("索引越界了");
//        }
//        System.out.println("看看我执行了吗？");


//        int[] arr = {1, 2, 3, 4, 5};
//        try {
//            System.out.println(arr[10]);
//        } catch (Exception e) {
//            //把错误输出到控制台
//            //仅仅是打印信息 不会停止程序运行
//            //e.printStackTrace();
//
//            //e.getMessage() 可以获取异常的详细信息
//            //String msg = e.getMessage();
//            //System.out.println(msg);
//
//            //获取异常的名字 和 异常的信息
//            //String str=e.toString();
//            //System.out.println(str);
//
//
//        }
//        System.out.println("看看我执行了吗？");

        Scanner sc = new Scanner(System.in);
        GirlFriend girlFriend = new GirlFriend();
        while (true) {
            try {
                System.out.println("请输入姓名：");
                String name = sc.nextLine();
                girlFriend.setName(name);
                System.out.println("请输入年龄：");
                int age = Integer.parseInt(sc.nextLine());
                girlFriend.setAge(age);
                break;
            } catch (NameFormatException e) {
                System.out.println(e.getMessage());
            } catch (AgeOutOfBoundsException e) {
                System.out.println(e.getMessage());
            }catch (NumberFormatException e) {
                System.out.println(e.getMessage());
            }
        }
        System.out.println(girlFriend);

    }
}
